JS - array - filter method
Home

JS - array - filter method

JS - array - filter method

De filter methode retourneert een array gevuld met arrayelementen die aan een test voldoen. De test wordt in de vorm van een functie als parameter meegegeven. De filter methode wordt niet uitgevoerd op de array-elementen zonder waarden. En de filter methode muteert de oorspronkelijke array niet.

Syntaxis

array.filter(function(currentValue,index,arr), thisValue)

Parameters

Parameter Beschrijving
function(currentValue, index, arr) verplicht, een functie die voor elk element in de array uitgevoerd zal worden
Functie argumenten:
Argument Beschrijving
currentValue verplicht: de waarde van het lopende element
index optioneel: de array-index van het lopende element
arr optioneel: de array waarvan het lopende element deel van uitmaakt
thisValue optioneel: een waarde die aan de functie meegegeven kan worden en die als haar "this" waarde kan optreden

Toepassing

Maar wat als ik alleen een gedeelte van de array wil transformeren?

Veronderstel dat de bron-array een aantal waarden heeft die je u wil transformeren, en een aantal waarden die je wil negeren. Dat kan niet met de map methode alleen want hiervoor zijn het aantal invoerwaarden altijd gelijk aan het aantal uitvoerwaarden.

Bijvoorbeeld, je wilt de oneven getallen verdubbelen, maar de even getallen negeren. Dat kan je met devolgde constructie:

var numberList = [1, 2, 3, 4, 5, 6];
var newNumberList = [];

for(var i = 0; i < numberList.length; i++) {
    if(numberList[i] % 2 !== 0) {
        newNumberList[i] = numberList[i] * 2;
    }
}
console.log("The doubled numbers are", newNumberList); // [2, 6, 12]

Dat kan je met de map en de filter methode doen:

var numberList = [1, 2, 3, 4, 5, 6];
var newNumberList = numberList.filter(function(number) {
    return (number % 2 !== 0);
}).map(function(number) {
    return number * 2;
});
console.log("The doubled numbers are", newNumberList); // [2, 6, 12]

De filter callback respecteert dezelfde niet muteren en veroorzaak geen neveneffecten regels als de map methode. Enkel de bewerkingen zijn verschillend.

De geretourneerde waarde van de filter callback moet een boolean zijn. Die geeft aan of de oorspronkelijke waarde in het resultaat moet worden opgenomen (true) of eruit moet worden gelaten (false). Je moet dus niet de waarde zelf retourneren maar een boolean. Je kan de waarde niet wijzigen vanuit de callback. De return waarde bepaalt of de waarde zal worden opgenomen in het resultaat of niet.

Bronnen

  1. Una Kravets, An Illustrated (and Musical) Guide to Map, Reduce, and Filter Array Methods, Mar 26, 2019

JI
2019-03-30 16:36:02